' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.08.29.21.34]) on 2023.09.16 at 17:07 (Coordinated Universal Time) ' GW-BASIC program by Benito Navarro Martinez ' Ported to BASIC Anywhere Machine by Charlie Veniot ' BIN$ is a reserved function name in BAM, so changed the BIN$ variable to BINNIE$ _INITAUDIO ' BAM's audio uses the web audio API, which needs to be initialized 10 KEY OFF : DEFINT A-Z 20 DEF FNUCASE$(X$)=CHR$(ASC(X$) AND &HDF) 30 DEF FNCOMPLEMENT(X)=-X-1 40 BYTE=0 : DECIMAL=0 50 I=0 : V128=128 60 BINNIE$=" " ' 8 spaces 70 TRUE=(1=1) : FALSE=NOT TRUE 80 BLANK$=SPACE$(40) 90 REM --— 100 REM COLOR CODES FOR BASICA - GWBASIC 110 REM --— 120 YELLOW=14 : REM COLOR CODE FOR YELLOW (AMARILLO) 130 WHITE=15 : REM WHITE (BLANCO BRILLANTE) 140 NORMAL=7 150 REM ======= 160 REM MAIN PROGRAM 170 REM ====== 180 CLS 190 LOCATE 1,28 : COLOR 12 : PRINT "CONVERSION BINARY TO DECIMAL" 200 LOCATE 6,25 : COLOR 11 : PRINT "87654321"; 210 COLOR YELLOW,0 220 LOCATE 7,4 : PRINT "Type a binary number: "; 230 COLOR NORMAL,0 240 LOCATE 24,1 : PRINT BLANK$; 250 LOCATE 7,25 : PRINT BLANK$; 260 LOCATE 9,25 : PRINT BLANK$; 270 COLOR 0,NORMAL 280 LOCATE 7,25,1 'Cursor ON 290 I=0 ' BE SURE I=0 300 WHILE I<8 310 K$=INPUT$(1) 320 IF K$="0" OR K$="1" THEN PRINT K$; : I=I+1 : MID$(BINNIE$,I,1)=K$ ELSE BEEP 330 WEND ' BAM does not have a third parameter for LOCATE -> 340 LOCATE 0 'Cursor Off 350 GOSUB 590 'Convert BINNIE$ to DECIMAL 360 LOCATE 7,33 : PRINT " is " + DECIMAL + " decimal"; ' Line 360: BAM needs the concatenation sign between print items ' BAM needed a space after "is" and before "decimal", so added those 370 LOCATE 9,25 380 BYTE=DECIMAL : GOSUB 510 'DECIMAL TO BINARY 390 PRINT " its complement is "; 400 BYTE=FNCOMPLEMENT(DECIMAL) : GOSUB 510 'DECIMAL TO BINARY 410 COLOR 5,NORMAL 420 LOCATE 24,1 : PRINT "Press (C) to continue, (F) to finish"; 430 K$=FNUCASE$(INPUT$(1)) : REM I discovered this way to use the INPUT$ statement 440 IF INSTR("CF",K$)=0 GOTO 430 450 IF K$="C" GOTO 230 460 COLOR NORMAL,0 : CLS 470 END 480 REM -----------— 490 REM CONVERSION DECIMAL TO BINARY 500 REM -----------— 510 FOR I=1 TO 8 520 PRINT USING "#";(BYTE AND V128)/V128; 530 BYTE=(BYTE AND 127)*2 540 NEXT 550 RETURN 560 REM -----------— 570 REM CONVERSION BINARY TO DECIMAL 580 REM -----------— 590 : 600 DECIMAL=0 610 FOR I=8 TO 1 STEP -1 620 IF MID$(BINNIE$,I,1)="1" THEN DECIMAL=DECIMAL+2^(8-I) 630 NEXT 640 RETURN